struct m68k_opcode
{
  char *name;
  unsigned long opcode;
  unsigned long  match;
  char *args;
};

/* We store four bytes of opcode for all opcodes because that
   is the most any of them need.  The actual length of an instruction
   is always at least 2 bytes, and is as much longer as necessary to
   hold the operands it has.

   The match component is a mask saying which bits must match
   particular opcode in order for an instruction to be an instance
   of that opcode.

   The args component is a string containing two characters
   for each operand of the instruction.  The first specifies
   the kind of operand; the second, the place it is stored.  */

/* Kinds of operands:
   D  data register only.  Stored as 3 bits.
   A  address register only.  Stored as 3 bits.
   F  floating point coprocessor register only.   Stored as 3 bits.
   R  either kind of register.  Stored as 4 bits.
   O  an offset (or width): immediate data 0-31 or data register.
      Stored as 6 bits in special format for BF... insns.
   +  autoincrement only.  Stored as 3 bits (number of the address register).
   -  autodecrement only.  Stored as 3 bits (number of the address register).
   Q  quick immediate data.  Stored as 3 bits.
      This matches an immediate operand only when value is in range 1 .. 8.
   M  moveq immediate data.  Stored as 8 bits.
      This matches an immediate operand only when value is in range -128..127
   T  trap vector immediate data.  Stored as 4 bits.

   k  K-factor for fmove.p instruction.   Stored as a 7-bit constant or
      a three bit register offset, depending on the field type.

   #  immediate data.  Stored in special places (b, w or l)
      which say how many bits to store.
   ^  immediate data for floating point instructions.   Special places
      are offset by 2 bytes from '#'...
   B  pc-relative address, converted to an offset
      that is treated as immediate data.
   d  displacement and register.  Stores the register as 3 bits
      and stores the displacement in the entire second word.

   C  the CCR.  No need to store it; this is just for filtering validity.
   S  the SR.  No need to store, just as with CCR.
   U  the USP.  No need to store, just as with CCR.

   I  Coprocessor ID.   Not printed if 1.   The Coprocessor ID is always
      extracted from the 'd' field of word one, which means that an extended
      coprocessor opcode can be skipped using the 'i' place, if needed.

   s  System Control register for the floating point coprocessor.

 These specifiy various classes of addressing modes.
 They are all stored as 6 bits using an address mode and a register number;
 they differ in which addressing modes they match.

   *  all					(modes 0-6,7.*)
   ~  alterable memory				(modes 2-6,7.0,7.1)(not 0,1,7.~)
   %  alterable					(modes 0-6,7.0,7.1)(not 7.~)
   ;  data					(modes 0,2-6,7.*)(not 1)
   @  data, but not immediate			(modes 0,2-6,7.???)(not 1,7.?)  This may really be ;, the 68020 book says it is
   !  control					(modes 2,5,6,7.*-)(not 0,1,3,4,7.4)
   &  alterable control				(modes 2,5,6,7.0,7.1)(not 0,1,7.???)
   $  alterable data				(modes 0,2-6,7.0,7.1)(not 1,7.~)
   ?  alterable control, or data register	(modes 0,2,5,6,7.0,7.1)(not 1,3,4,7.~)
   /  control, or data register			(modes 0,2,5,6,7.0,7.1,7.2,7.3)(not 1,3,4,7.4)
*/

/* Places to put an operand, for non-general operands:
   s  source, low bits of first word.
   d  dest, shifted 9 in first word
   1  second word, shifted 12
   2  second word, shifted 6
   3  second word, shifted 0
   4  third word, shifted 12
   5  third word, shifted 6
   6  third word, shifted 0
   7  second word, shifted 7
   8  second word, shifted 10
   D  store in both place 1 and place 3; for divul and divsl.
   b  second word, low byte
   w  second word (entire)
   l  second and third word (entire)
   g  branch offset for bra and similar instructions.
      The place to store depends on the magnitude of offset.
   t  store in both place 7 and place 8; for floating point operations
   c  branch offset for cpBcc operations.
      The place to store is word two if bit six of word one is zero,
      and words two and three if bit six of word one is one.
   i  Increment by two, to skip over coprocessor extended operands.   Only
      works with the 'I' format.
   k  Dynamic K-factor field.   Bits 6-4 of word 2, used as a register number.
      Also used for dynamic fmovem instruction.
   C  floating point coprocessor constant - 7 bits.  Also used for static
      K-factors...

 Places to put operand, for general operands:
   d  destination, shifted 6 bits in first word
   b  source, at low bit of first word, and immediate uses one byte
   w  source, at low bit of first word, and immediate uses two bytes
   l  source, at low bit of first word, and immediate uses four bytes
   s  source, at low bit of first word.
      Used sometimes in contexts where immediate is not allowed anyway.
   f  single precision float, low bit of 1st word, immediate uses 4 bytes
   F  double precision float, low bit of 1st word, immediate uses 8 bytes
   x  extended precision float, low bit of 1st word, immediate uses 12 bytes
   p  packed float, low bit of 1st word, immediate uses 12 bytes
*/

#define one(x) ((x) << 16)
#define two(x, y) (((x) << 16) + y)

/* The assembler requires that this array be sorted as follows:
   all instances of the same mnemonic must be consecutive.
   All instances of the same mnemonic with the same number of operands
   must be consecutive.
 */
struct m68k_opcode m68k_opcodes[] =
{
  {"abcd", one (0140400), one (0170770), "DsDd"},
  {"abcd", one (0140410), one (0170770), "-s-d"},

		/* Add instructions */
  {"addal", one (0150700), one (0170700), "*lAd"},
  {"addaw", one (0150300), one (0170700), "*wAd"},
  {"addib", one (0003000), one (0177700), "#b$b"},
  {"addil", one (0003200), one (0177700), "#l$l"},
  {"addiw", one (0003100), one (0177700), "#w$w"},
  {"addqb", one (0050000), one (0170700), "Qd$b"},
  {"addql", one (0050200), one (0170700), "Qd%l"},
  {"addqw", one (0050100), one (0170700), "Qd%w"},

  {"addb", one (0003000), one (0177700), "#b$b"}, /* addi written as add */
  {"addb", one (0050000), one (0170700), "Qd$b"}, /* addq written as add */
  {"addb", one (0150000), one (0170700), ";bDd"}, /* addb <ea>, Dd */
  {"addb", one (0150400), one (0170700), "Dd~b"}, /* addb Dd, <ea> */

  {"addw", one (0003100), one (0177700), "#w$w"}, /* addi written as add */
  {"addw", one (0150300), one (0170700), "*wAd"}, /* adda written as add */
  {"addw", one (0050100), one (0170700), "Qd%w"}, /* addq written as add */
  {"addw", one (0150100), one (0170700), "*wDd"}, /* addw <ea>, Dd */
  {"addw", one (0150500), one (0170700), "Dd~w"}, /* addw Dd, <ea> */

  {"addl", one (0003200), one (0177700), "#l$l"}, /* addi written as add */
  {"addl", one (0150700), one (0170700), "*lAd"}, /* adda written as add */
  {"addl", one (0050200), one (0170700), "Qd%l"}, /* addq written as add */
  {"addl", one (0150200), one (0170700), "*lDd"}, /* addl <ea>, Dd */
  {"addl", one (0150600), one (0170700), "Dd~l"}, /* addl Dd, <ea> */

  {"addxb", one (0150400), one (0170770), "DsDd"},
  {"addxb", one (0150410), one (0170770), "-s-d"},
  {"addxl", one (0150600), one (0170770), "DsDd"},
  {"addxl", one (0150610), one (0170770), "-s-d"},
  {"addxw", one (0150500), one (0170770), "DsDd"},
  {"addxw", one (0150510), one (0170770), "-s-d"},

  {"andib", one (0001000), one (0177700), "#b$b"},
  {"andib", one (0001074), one (0177777), "#bCb"}, /* andi to ccr */
  {"andiw", one (0001100), one (0177700), "#w$w"},
  {"andiw", one (0001174), one (0177777), "#wSw"}, /* andi to sr */
  {"andil", one (0001200), one (0177700), "#l$l"},

  {"andb", one (0001000), one (0177700), "#b$b"}, /* andi written as or */
  {"andb", one (0001074), one (0177777), "#bCb"}, /* andi to ccr */
  {"andb", one (0140000), one (0170700), ";bDd"}, /* memory to register */
  {"andb", one (0140400), one (0170700), "Dd~b"}, /* register to memory */
  {"andw", one (0001100), one (0177700), "#w$w"}, /* andi written as or */
  {"andw", one (0001174), one (0177777), "#wSw"}, /* andi to sr */
  {"andw", one (0140100), one (0170700), ";wDd"}, /* memory to register */
  {"andw", one (0140500), one (0170700), "Dd~w"}, /* register to memory */
  {"andl", one (0001200), one (0177700), "#l$l"}, /* andi written as or */
  {"andl", one (0140200), one (0170700), ";lDd"}, /* memory to register */
  {"andl", one (0140600), one (0170700), "Dd~l"}, /* register to memory */

  {"aslb", one (0160400), one (0170770), "QdDs"},
  {"aslb", one (0160440), one (0170770), "DdDs"},
  {"asll", one (0160600), one (0170770), "QdDs"},
  {"asll", one (0160640), one (0170770), "DdDs"},
  {"aslw", one (0160500), one (0170770), "QdDs"},
  {"aslw", one (0160540), one (0170770), "DdDs"},
  {"aslw", one (0160700), one (0177700), "~s"},	/* Shift memory */
  {"asrb", one (0160000), one (0170770), "QdDs"},
  {"asrb", one (0160040), one (0170770), "DdDs"},
  {"asrl", one (0160200), one (0170770), "QdDs"},
  {"asrl", one (0160240), one (0170770), "DdDs"},
  {"asrw", one (0160100), one (0170770), "QdDs"},
  {"asrw", one (0160140), one (0170770), "DdDs"},
  {"asrw", one (0160300), one (0177700), "~s"},	/* Shift memory */

  {"bhi", one (0061000), one (0177400), "Bg"},
  {"bls", one (0061400), one (0177400), "Bg"},
  {"bcc", one (0062000), one (0177400), "Bg"},
  {"bcs", one (0062400), one (0177400), "Bg"},
  {"bne", one (0063000), one (0177400), "Bg"},
  {"beq", one (0063400), one (0177400), "Bg"},
  {"bvc", one (0064000), one (0177400), "Bg"},
  {"bvs", one (0064400), one (0177400), "Bg"},
  {"bpl", one (0065000), one (0177400), "Bg"},
  {"bmi", one (0065400), one (0177400), "Bg"},
  {"bge", one (0066000), one (0177400), "Bg"},
  {"blt", one (0066400), one (0177400), "Bg"},
  {"bgt", one (0067000), one (0177400), "Bg"},
  {"ble", one (0067400), one (0177400), "Bg"},

  {"bchg", one (0000500), one (0170700), "Dd$s"},
  {"bchg", one (0004100), one (0177700), "#b$s"},
  {"bclr", one (0000600), one (0170700), "Dd$s"},
  {"bclr", one (0004200), one (0177700), "#b$s"},
  {"bfchg", one (0165300), one (0177700), "?sO2O3"},
  {"bfclr", one (0166300), one (0177700), "?sO2O3"},
  {"bfexts", one (0165700), one (0177700), "/sO2O3D1"},
  {"bfextu", one (0164700), one (0177700), "/sO2O3D1"},
  {"bfffo", one (0166700), one (0177700), "/sO2O3D1"},
  {"bfins", one (0167700), one (0177700), "D1?sO2O3"},
  {"bfset", one (0167300), one (0177700), "?sO2O3"},
  {"bftst", one (0164300), one (0177700), "/sO2O3"},
  {"bset", one (0000700), one (0170700), "Dd$s"},
  {"bset", one (0004300), one (0177700), "#b$s"},
  {"btst", one (0000400), one (0170700), "Dd@s"},
  {"btst", one (0004000), one (0177700), "#b@s"},

  {"bkpt", one (0044110), one (0177770), "Qs"},
  {"bra", one (0060000), one (0177400), "Bg"},
  {"bsr", one (0060400), one (0177400), "Bg"},
  {"callm", one (0003300), one (0177700), "#b!s"},
  {"cas2l", one (0007374), one (0177777), "D3D6D2D4R1R3"},
  {"cas2w", one (0006374), one (0177777), "D3D6D2D4R1R3"},
  {"casb", one (0005300), one (0177700), "D3D2~s"},
  {"casl", one (0007300), one (0177700), "D3D2~s"},
  {"casw", one (0006300), one (0177700), "D3D2~s"},

/*  {"chk", one (0040600), one (0170700), ";wDd"}, FOO this looks wrong */
  {"chk2b", two (0000300, 0004000), two (0177700, 07777), "!sR1"},
  {"chk2l", two (0002300, 0004000), two (0177700, 07777), "!sR1"},
  {"chk2w", two (0001300, 0004000), two (0177700, 07777), "!sR1"},
  {"chkl", one (0040400), one (0170700), ";lDd"},
  {"chkw", one (0040600), one (0170700), ";wDd"},
  {"clrb", one (0041000), one (0177700), "$s"},
  {"clrl", one (0041200), one (0177700), "$s"},
  {"clrw", one (0041100), one (0177700), "$s"},

  {"cmp2b", two (0000300, 0), two (0177700, 07777), "!sR1"},
  {"cmp2l", two (0002300, 0), two (0177700, 07777), "!sR1"},
  {"cmp2w", two (0001300, 0), two (0177700, 07777), "!sR1"},
  {"cmpal", one (0130700), one (0170700), "*lAd"},
  {"cmpaw", one (0130300), one (0170700), "*wAd"},
  {"cmpib", one (0006000), one (0177700), "#b;b"},
  {"cmpil", one (0006200), one (0177700), "#l;l"},
  {"cmpiw", one (0006100), one (0177700), "#w;w"},
  {"cmpb", one (0006000), one (0177700), "#b;b"}, /* cmpi written as cmp */
  {"cmpb", one (0130000), one (0170700), ";bDd"},
  {"cmpw", one (0006100), one (0177700), "#w;w"},
  {"cmpw", one (0130100), one (0170700), "*wDd"},
  {"cmpw", one (0130300), one (0170700), "*wAd"}, /* cmpa written as cmp */
  {"cmpl", one (0006200), one (0177700), "#l;l"},
  {"cmpl", one (0130200), one (0170700), "*lDd"},
  {"cmpl", one (0130700), one (0170700), "*lAd"},
  {"cmpmb", one (0130410), one (0170770), "+s+d"},
  {"cmpml", one (0130610), one (0170770), "+s+d"},
  {"cmpmw", one (0130510), one (0170770), "+s+d"},

  {"dbcc", one (0052310), one (0177770), "DsBw"},
  {"dbcs", one (0052710), one (0177770), "DsBw"},
  {"dbeq", one (0053710), one (0177770), "DsBw"},
  {"dbf", one (0050710), one (0177770), "DsBw"},
  {"dbge", one (0056310), one (0177770), "DsBw"},
  {"dbgt", one (0057310), one (0177770), "DsBw"},
  {"dbhi", one (0051310), one (0177770), "DsBw"},
  {"dble", one (0057710), one (0177770), "DsBw"},
  {"dbls", one (0051710), one (0177770), "DsBw"},
  {"dblt", one (0056710), one (0177770), "DsBw"},
  {"dbmi", one (0055710), one (0177770), "DsBw"},
  {"dbne", one (0053310), one (0177770), "DsBw"},
  {"dbpl", one (0055310), one (0177770), "DsBw"},
  {"dbra", one (0050710), one (0177770), "DsBw"},
  {"dbt", one (0050310), one (0177770), "DsBw"},
  {"dbvc", one (0054310), one (0177770), "DsBw"},
  {"dbvs", one (0054710), one (0177770), "DsBw"},

  {"divsl", two (0046100, 0004000), two (0177700, 0107770), ";lD3D1"},
  {"divsl", two (0046100, 0004000), two (0177700, 0107770), ";lDD"},
  {"divsll", two (0046100, 0006000), two (0177700, 0107770), ";lD3D1"},
  {"divsw", one (0100700), one (0170700), ";wDd"},
  {"divs", one (0100700), one (0170700), ";wDd"},
  {"divul", two (0046100, 0000000), two (0177700, 0107770), ";lD3D1"},
  {"divul", two (0046100, 0000000), two (0177700, 0107770), ";lDD"},
  {"divull", two (0046100, 0002000), two (0177700, 0107770), ";lD3D1"},
  {"divuw", one (0100300), one (0170700), ";wDd"},
  {"divu", one (0100300), one (0170700), ";wDd"},
  {"eorb", one (0005000), one (0177700), "#b$s"}, /* eori written as or */
  {"eorb", one (0005074), one (0177777), "#bCs"}, /* eori to ccr */
  {"eorb", one (0130400), one (0170700), "Dd$s"}, /* register to memory */
  {"eorib", one (0005000), one (0177700), "#b$s"},
  {"eorib", one (0005074), one (0177777), "#bCs"}, /* eori to ccr */
  {"eoril", one (0005200), one (0177700), "#l$s"},
  {"eoriw", one (0005100), one (0177700), "#w$s"},
  {"eoriw", one (0005174), one (0177777), "#wSs"}, /* eori to sr */
  {"eorl", one (0005200), one (0177700), "#l$s"},
  {"eorl", one (0130600), one (0170700), "Dd$s"},
  {"eorw", one (0005100), one (0177700), "#w$s"},
  {"eorw", one (0005174), one (0177777), "#wSs"}, /* eori to sr */
  {"eorw", one (0130500), one (0170700), "Dd$s"},

  {"exg", one (0140500), one (0170770), "DsDd"},
  {"exg", one (0140510), one (0170770), "AsAd"},
  {"exg", one (0140610), one (0170770), "DsAd"},
  {"exg", one (0140610), one (0170770), "AdDs"},

  {"extw", one (0044200), one (0177770), "Ds"},
  {"extl", one (0044300), one (0177770), "Ds"},
  {"extbl", one (0044700), one (0177770), "Ds"},
  {"extb.l", one (0044700), one (0177770), "Ds"},	/* Not sure we should support this one */

  {"fabsb", two (0xF000, 0x5818), two (0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fabsd", two (0xF000, 0x5418), two (0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fabsl", two( 0xF000, 0x4018), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fabsp", two (0xF000, 0x4C18), two (0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fabss", two (0xF000, 0x4418), two (0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fabsw", two (0xF000, 0x5018), two (0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fabsx", two (0xF000, 0x0018), two (0xF1C0, 0xE07F), "IiF8F7"},
  {"fabsx", two (0xF000, 0x0018), two (0xF1C0, 0xE07F), "IiFt"},
  {"fabsx", two (0xF000, 0x4818), two (0xF1C0, 0xFC7F), "Ii;xF7"},

  {"facosb", two (0xF000, 0x581C), two (0xF1C0, 0xFC7F), "Ii;bF7"},
  {"facosd", two (0xF000, 0x541C), two (0xF1C0, 0xFC7F), "Ii;FF7"},
  {"facosl", two (0xF000, 0x401C), two (0xF1C0, 0xFC7F), "Ii;lF7"},
  {"facosp", two (0xF000, 0x4C1C), two (0xF1C0, 0xFC7F), "Ii;pF7"},
  {"facoss", two (0xF000, 0x441C), two (0xF1C0, 0xFC7F), "Ii;fF7"},
  {"facosw", two (0xF000, 0x501C), two (0xF1C0, 0xFC7F), "Ii;wF7"},
  {"facosx", two (0xF000, 0x001C), two (0xF1C0, 0xE07F), "IiF8F7"},
  {"facosx", two (0xF000, 0x001C), two (0xF1C0, 0xE07F), "IiFt"},
  {"facosx", two (0xF000, 0x481C), two (0xF1C0, 0xFC7F), "Ii;xF7"},

  {"faddb", two (0xF000, 0x5822), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"faddd", two (0xF000, 0x5422), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"faddl", two (0xF000, 0x4022), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"faddp", two (0xF000, 0x4C22), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fadds", two (0xF000, 0x4422), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"faddw", two (0xF000, 0x5022), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"faddx", two (0xF000, 0x0022), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"faddx", two (0xF000, 0x0022), two( 0xF1C0, 0xE07F), "IiFt"},
  {"faddx", two (0xF000, 0x4822), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fasinb", two (0xF000, 0x580C), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fasind", two (0xF000, 0x540C), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fasinl", two (0xF000, 0x400C), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fasinp", two (0xF000, 0x4C0C), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fasins", two (0xF000, 0x440C), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fasinw", two (0xF000, 0x500C), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fasinx", two (0xF000, 0x000C), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fasinx", two (0xF000, 0x000C), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fasinx", two (0xF000, 0x480C), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fatanb", two (0xF000, 0x580A), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fatand", two (0xF000, 0x540A), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fatanl", two (0xF000, 0x400A), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fatanp", two (0xF000, 0x4C0A), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fatans", two (0xF000, 0x440A), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fatanw", two (0xF000, 0x500A), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fatanx", two (0xF000, 0x000A), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fatanx", two (0xF000, 0x000A), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fatanx", two (0xF000, 0x480A), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fatanhb", two (0xF000, 0x580D), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fatanhd", two (0xF000, 0x540D), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fatanhl", two (0xF000, 0x400D), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fatanhp", two (0xF000, 0x4C0D), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fatanhs", two (0xF000, 0x440D), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fatanhw", two (0xF000, 0x500D), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fatanhx", two (0xF000, 0x000D), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fatanhx", two (0xF000, 0x000D), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fatanhx", two (0xF000, 0x480D), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fbeq", one (0xF081), one (0xF1FF), "IdBc"},
  {"fbf", one (0xF080), one (0xF1FF), "IdBc"},
  {"fbge", one (0xF093), one (0xF1FF), "IdBc"},
  {"fbgl", one (0xF096), one (0xF1FF), "IdBc"},
  {"fbgle", one (0xF097), one (0xF1FF), "IdBc"},
  {"fbgt", one (0xF092), one (0xF1FF), "IdBc"},
  {"fble", one (0xF095), one (0xF1FF), "IdBc"},
  {"fblt", one (0xF094), one (0xF1FF), "IdBc"},
  {"fbne", one (0xF08E), one (0xF1FF), "IdBc"},
  {"fbnge", one (0xF09C), one (0xF1FF), "IdBc"},
  {"fbngl", one (0xF099), one (0xF1FF), "IdBc"},
  {"fbngle", one (0xF098), one (0xF1FF), "IdBc"},
  {"fbngt", one (0xF09D), one (0xF1FF), "IdBc"},
  {"fbnle", one (0xF09A), one (0xF1FF), "IdBc"},
  {"fbnlt", one (0xF09B), one (0xF1FF), "IdBc"},
  {"fboge", one (0xF083), one (0xF1FF), "IdBc"},
  {"fbogl", one (0xF086), one (0xF1FF), "IdBc"},
  {"fbogt", one (0xF082), one (0xF1FF), "IdBc"},
  {"fbole", one (0xF085), one (0xF1FF), "IdBc"},
  {"fbolt", one (0xF084), one (0xF1FF), "IdBc"},
  {"fbor", one (0xF087), one (0xF1FF), "IdBc"},
  {"fbseq", one (0xF091), one (0xF1FF), "IdBc"},
  {"fbsf", one (0xF090), one (0xF1FF), "IdBc"},
  {"fbsne", one (0xF09E), one (0xF1FF), "IdBc"},
  {"fbst", one (0xF09F), one (0xF1FF), "IdBc"},
  {"fbt", one (0xF08F), one (0xF1FF), "IdBc"},
  {"fbueq", one (0xF089), one (0xF1FF), "IdBc"},
  {"fbuge", one (0xF08B), one (0xF1FF), "IdBc"},
  {"fbugt", one (0xF08A), one (0xF1FF), "IdBc"},
  {"fbule", one (0xF08D), one (0xF1FF), "IdBc"},
  {"fbult", one (0xF08C), one (0xF1FF), "IdBc"},
  {"fbun", one (0xF088), one (0xF1FF), "IdBc"},

  {"fcmpb", two (0xF000, 0x5838), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fcmpd", two (0xF000, 0x5438), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fcmpl", two (0xF000, 0x4038), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fcmpp", two (0xF000, 0x4C38), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fcmps", two (0xF000, 0x4438), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fcmpw", two (0xF000, 0x5038), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fcmpx", two (0xF000, 0x0038), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fcmpx", two (0xF000, 0x0038), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fcmpx", two (0xF000, 0x4838), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fcosb", two (0xF000, 0x581D), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fcosd", two (0xF000, 0x541D), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fcosl", two (0xF000, 0x401D), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fcosp", two (0xF000, 0x4C1D), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fcoss", two (0xF000, 0x441D), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fcosw", two (0xF000, 0x501D), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fcosx", two (0xF000, 0x001D), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fcosx", two (0xF000, 0x001D), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fcosx", two (0xF000, 0x481D), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fcoshb", two (0xF000, 0x5819), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fcoshd", two (0xF000, 0x5419), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fcoshl", two (0xF000, 0x4019), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fcoshp", two (0xF000, 0x4C19), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fcoshs", two (0xF000, 0x4419), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fcoshw", two (0xF000, 0x5019), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fcoshx", two (0xF000, 0x0019), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fcoshx", two (0xF000, 0x0019), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fcoshx", two (0xF000, 0x4819), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fdbeq", two (0xF048, 0x0001), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbf", two (0xF048, 0x0000), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbge", two (0xF048, 0x0013), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbgl", two (0xF048, 0x0016), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbgle", two (0xF048, 0x0017), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbgt", two (0xF048, 0x0012), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdble", two (0xF048, 0x0015), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdblt", two (0xF048, 0x0014), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbne", two (0xF048, 0x000E), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbnge", two (0xF048, 0x001C), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbngl", two (0xF048, 0x0019), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbngle", two (0xF048, 0x0018), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbngt", two (0xF048, 0x001D), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbnle", two (0xF048, 0x001A), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbnlt", two (0xF048, 0x001B), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdboge", two (0xF048, 0x0003), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbogl", two (0xF048, 0x0006), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbogt", two (0xF048, 0x0002), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbole", two (0xF048, 0x0005), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbolt", two (0xF048, 0x0004), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbor", two (0xF048, 0x0007), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbseq", two (0xF048, 0x0011), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbsf", two (0xF048, 0x0010), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbsne", two (0xF048, 0x001E), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbst", two (0xF048, 0x001F), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbt", two (0xF048, 0x000F), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbueq", two (0xF048, 0x0009), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbuge", two (0xF048, 0x000B), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbugt", two (0xF048, 0x000A), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbule", two (0xF048, 0x000D), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbult", two (0xF048, 0x000C), two (0xF1F8, 0xFFFF), "IiDsBw"},
  {"fdbun", two (0xF048, 0x0008), two (0xF1F8, 0xFFFF), "IiDsBw"},

  {"fdivb", two (0xF000, 0x5820), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fdivd", two (0xF000, 0x5420), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fdivl", two (0xF000, 0x4020), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fdivp", two (0xF000, 0x4C20), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fdivs", two (0xF000, 0x4420), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fdivw", two (0xF000, 0x5020), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fdivx", two (0xF000, 0x0020), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fdivx", two (0xF000, 0x0020), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fdivx", two (0xF000, 0x4820), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fetoxb", two (0xF000, 0x5810), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fetoxd", two (0xF000, 0x5410), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fetoxl", two (0xF000, 0x4010), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fetoxp", two (0xF000, 0x4C10), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fetoxs", two (0xF000, 0x4410), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fetoxw", two (0xF000, 0x5010), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fetoxx", two (0xF000, 0x0010), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fetoxx", two (0xF000, 0x0010), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fetoxx", two (0xF000, 0x4810), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fetoxm1b", two (0xF000, 0x5808), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fetoxm1d", two (0xF000, 0x5408), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fetoxm1l", two (0xF000, 0x4008), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fetoxm1p", two (0xF000, 0x4C08), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fetoxm1s", two (0xF000, 0x4408), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fetoxm1w", two (0xF000, 0x5008), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fetoxm1x", two (0xF000, 0x0008), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fetoxm1x", two (0xF000, 0x0008), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fetoxm1x", two (0xF000, 0x4808), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fgetexpb", two (0xF000, 0x581E), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fgetexpd", two (0xF000, 0x541E), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fgetexpl", two (0xF000, 0x401E), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fgetexpp", two (0xF000, 0x4C1E), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fgetexps", two (0xF000, 0x441E), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fgetexpw", two (0xF000, 0x501E), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fgetexpx", two (0xF000, 0x001E), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fgetexpx", two (0xF000, 0x001E), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fgetexpx", two (0xF000, 0x481E), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fgetmanb", two (0xF000, 0x581F), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fgetmand", two (0xF000, 0x541F), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fgetmanl", two (0xF000, 0x401F), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fgetmanp", two (0xF000, 0x4C1F), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fgetmans", two (0xF000, 0x441F), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fgetmanw", two (0xF000, 0x501F), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fgetmanx", two (0xF000, 0x001F), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fgetmanx", two (0xF000, 0x001F), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fgetmanx", two (0xF000, 0x481F), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fintb", two (0xF000, 0x5801), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fintd", two (0xF000, 0x5401), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fintl", two (0xF000, 0x4001), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fintp", two (0xF000, 0x4C01), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fints", two (0xF000, 0x4401), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fintw", two (0xF000, 0x5001), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fintx", two (0xF000, 0x0001), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fintx", two (0xF000, 0x0001), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fintx", two (0xF000, 0x4801), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fintrzb", two (0xF000, 0x5803), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fintrzd", two (0xF000, 0x5403), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fintrzl", two (0xF000, 0x4003), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fintrzp", two (0xF000, 0x4C03), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fintrzs", two (0xF000, 0x4403), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fintrzw", two (0xF000, 0x5003), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fintrzx", two (0xF000, 0x0003), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fintrzx", two (0xF000, 0x0003), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fintrzx", two (0xF000, 0x4803), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"flog10b", two (0xF000, 0x5815), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"flog10d", two (0xF000, 0x5415), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"flog10l", two (0xF000, 0x4015), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"flog10p", two (0xF000, 0x4C15), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"flog10s", two (0xF000, 0x4415), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"flog10w", two (0xF000, 0x5015), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"flog10x", two (0xF000, 0x0015), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"flog10x", two (0xF000, 0x0015), two( 0xF1C0, 0xE07F), "IiFt"},
  {"flog10x", two (0xF000, 0x4815), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"flog2b", two (0xF000, 0x5816), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"flog2d", two (0xF000, 0x5416), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"flog2l", two (0xF000, 0x4016), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"flog2p", two (0xF000, 0x4C16), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"flog2s", two (0xF000, 0x4416), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"flog2w", two (0xF000, 0x5016), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"flog2x", two (0xF000, 0x0016), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"flog2x", two (0xF000, 0x0016), two( 0xF1C0, 0xE07F), "IiFt"},
  {"flog2x", two (0xF000, 0x4816), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"flognb", two (0xF000, 0x5814), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"flognd", two (0xF000, 0x5414), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"flognl", two (0xF000, 0x4014), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"flognp", two (0xF000, 0x4C14), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"flogns", two (0xF000, 0x4414), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"flognw", two (0xF000, 0x5014), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"flognx", two (0xF000, 0x0014), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"flognx", two (0xF000, 0x0014), two( 0xF1C0, 0xE07F), "IiFt"},
  {"flognx", two (0xF000, 0x4814), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"flognp1b", two (0xF000, 0x5806), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"flognp1d", two (0xF000, 0x5406), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"flognp1l", two (0xF000, 0x4006), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"flognp1p", two (0xF000, 0x4C06), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"flognp1s", two (0xF000, 0x4406), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"flognp1w", two (0xF000, 0x5006), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"flognp1x", two (0xF000, 0x0006), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"flognp1x", two (0xF000, 0x0006), two( 0xF1C0, 0xE07F), "IiFt"},
  {"flognp1x", two (0xF000, 0x4806), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fmodb", two (0xF000, 0x5821), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fmodd", two (0xF000, 0x5421), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fmodl", two (0xF000, 0x4021), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fmodp", two (0xF000, 0x4C21), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fmods", two (0xF000, 0x4421), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fmodw", two (0xF000, 0x5021), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fmodx", two (0xF000, 0x0021), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fmodx", two (0xF000, 0x0021), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fmodx", two (0xF000, 0x4821), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fmoveb", two (0xF000, 0x5800), two (0xF1C0, 0xFC7F), "Ii;bF7"},		/* fmove from <ea> to fp<n> */
  {"fmoveb", two (0xF000, 0x7800), two (0xF1C0, 0xFC7F), "IiF7@b"},		/* fmove from fp<n> to <ea> */
  {"fmoved", two (0xF000, 0x5400), two (0xF1C0, 0xFC7F), "Ii;FF7"},		/* fmove from <ea> to fp<n> */
  {"fmoved", two (0xF000, 0x7400), two (0xF1C0, 0xFC7F), "IiF7@F"},		/* fmove from fp<n> to <ea> */
  {"fmovel", two (0xF000, 0x4000), two (0xF1C0, 0xFC7F), "Ii;lF7"},		/* fmove from <ea> to fp<n> */
  {"fmovel", two (0xF000, 0x6000), two (0xF1C0, 0xFC7F), "IiF7@l"},		/* fmove from fp<n> to <ea> */
  {"fmovep", two (0xF000, 0x4C00), two (0xF1C0, 0xFC7F), "Ii;pF7"},		/* fmove from <ea> to fp<n> */
  {"fmovep", two (0xF000, 0x6C00), two (0xF1C0, 0xFC00), "IiF7@pkC"},		/* fmove.p with k-factors: */
  {"fmovep", two (0xF000, 0x7C00), two (0xF1C0, 0xFC0F), "IiF7@pkk"},		/* fmove.p with k-factors: */
  {"fmoves", two (0xF000, 0x4400), two (0xF1C0, 0xFC7F), "Ii;fF7"},		/* fmove from <ea> to fp<n> */
  {"fmoves", two (0xF000, 0x6400), two (0xF1C0, 0xFC7F), "IiF7@f"},		/* fmove from fp<n> to <ea> */
  {"fmovew", two (0xF000, 0x5000), two (0xF1C0, 0xFC7F), "Ii;wF7"},		/* fmove from <ea> to fp<n> */
  {"fmovew", two (0xF000, 0x7000), two (0xF1C0, 0xFC7F), "IiF7@w"},		/* fmove from fp<n> to <ea> */
  {"fmovex", two (0xF000, 0x0000), two (0xF1C0, 0xE07F), "IiF8F7"},		/* fmove from <ea> to fp<n> */
  {"fmovex", two (0xF000, 0x0000), two (0xF1C0, 0xE07F), "IiFt"},		/* fmove from <ea> to fp<n> */
  {"fmovex", two (0xF000, 0x4800), two (0xF1C0, 0xFC7F), "Ii;xF7"},		/* fmove from <ea> to fp<n> */
  {"fmovex", two (0xF000, 0x6800), two (0xF1C0, 0xFC7F), "IiF7@x"},		/* fmove from fp<n> to <ea> */

		/* fmove.l from/to system control registers: */

/* fmove.l and fmovem.l are the same instruction.   fmovem.l makes sense in
   more cases, so I've dumped fmove.l pro tem, but this is the wrong
   way to solve the problem in the long run.   Hmmm. */
/*  {"fmove.l", two (0xF000, 0xA000), two (0xF1C0, 0xE3FF), "Iis8@s"}, */
/*  {"fmove.l", two (0xF000, 0x8000), two (0xF1C0, 0xE3FF), "Ii@ss8"}, */

  {"fmovecrx", two (0xF000, 0x5C00), two (0xF1FF, 0xFC00), "Ii#CF7"},		/* fmovecr.x #ccc, FPn */

  {"fmovemx", two (0xF020, 0xE000), two (0xF1F8, 0xFF00), "Id#b-s"},		/* fmovem.x to autodecrement, static and dynamic */
  {"fmovemx", two (0xF020, 0xE800), two (0xF1F8, 0xFF8F), "IiDk-s"},		/* fmovem.x to autodecrement, static and dynamic */

  {"fmovemx", two (0xF000, 0xF000), two (0xF1C0, 0xFF00), "Id#b&s"},		/* fmovem.x to control, static and dynamic: */
  {"fmovemx", two (0xF000, 0xF800), two (0xF1C0, 0xFF8F), "IiDk&s"},		/* fmovem.x to control, static and dynamic: */

  {"fmovemx", two (0xF018, 0xD000), two (0xF1F8, 0xFF00), "Id#b+s"},		/* fmovem.x from autoincrement, static and dynamic: */
  {"fmovemx", two (0xF018, 0xD800), two (0xF1F8, 0xFF8F), "IiDk+s"},		/* fmovem.x from autoincrement, static and dynamic: */
  
  {"fmovemx", two (0xF000, 0xD000), two (0xF1C0, 0xFF00), "Id#b&s"},		/* fmovem.x from control, static and dynamic: */
  {"fmovemx", two (0xF000, 0xD800), two (0xF1C0, 0xFF8F), "IiDk&s"},		/* fmovem.x from control, static and dynamic: */

/* fmoveml and fmovel are the same instruction.   This may cause some
   confusion in the assembler. */

  {"fmoveml", two (0xF000, 0xA000), two (0xF1C0, 0xE3FF), "Ii#8%s"},		/* fmovem.l to/from system control register(s): */
  {"fmoveml", two (0xF000, 0x8000), two (0xF1C0, 0xE3FF), "Ii%s#8"},		/* fmovem.l to/from system control register(s): */

  {"fmulb", two (0xF000, 0x5823), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fmuld", two (0xF000, 0x5423), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fmull", two (0xF000, 0x4023), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fmulp", two (0xF000, 0x4C23), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fmuls", two (0xF000, 0x4423), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fmulw", two (0xF000, 0x5023), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fmulx", two (0xF000, 0x0023), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fmulx", two (0xF000, 0x0023), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fmulx", two (0xF000, 0x4823), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fnegb", two (0xF000, 0x581A), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fnegd", two (0xF000, 0x541A), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fnegl", two (0xF000, 0x401A), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fnegp", two (0xF000, 0x4C1A), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fnegs", two (0xF000, 0x441A), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fnegw", two (0xF000, 0x501A), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fnegx", two (0xF000, 0x001A), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fnegx", two (0xF000, 0x001A), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fnegx", two (0xF000, 0x481A), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fremb", two (0xF000, 0x5825), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fremd", two (0xF000, 0x5425), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"freml", two (0xF000, 0x4025), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fremp", two (0xF000, 0x4C25), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"frems", two (0xF000, 0x4425), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fremw", two (0xF000, 0x5025), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fremx", two (0xF000, 0x0025), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fremx", two (0xF000, 0x0025), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fremx", two (0xF000, 0x4825), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

/* Need special mode for autoincrement/decrement? */
  {"frestore", one (0xF140), one (0xF1C0), "Id&s"},
  {"fsave", one (0xF100), one( 0xF1C0), "Id&s"},

  {"fsincosb", two (0xF000, 0x5830), two( 0xF1C0, 0xFC78), "Ii;bF7FC"},
  {"fsincosd", two (0xF000, 0x5430), two( 0xF1C0, 0xFC78), "Ii;FF7FC"},
  {"fsincosl", two (0xF000, 0x4030), two( 0xF1C0, 0xFC78), "Ii;lF7FC"},
  {"fsincosp", two (0xF000, 0x4C30), two( 0xF1C0, 0xFC78), "Ii;pF7FC"},
  {"fsincoss", two (0xF000, 0x4430), two( 0xF1C0, 0xFC78), "Ii;fF7FC"},
  {"fsincosw", two (0xF000, 0x5030), two( 0xF1C0, 0xFC78), "Ii;wF7FC"},
  {"fsincosx", two (0xF000, 0x0030), two( 0xF1C0, 0xE078), "IiF8F7FC"},
  {"fsincosx", two (0xF000, 0x4830), two( 0xF1C0, 0xFC78), "Ii;xF7FC"},

  {"fscaleb", two (0xF000, 0x5826), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fscaled", two (0xF000, 0x5426), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fscalel", two (0xF000, 0x4026), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fscalep", two (0xF000, 0x4C26), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fscales", two (0xF000, 0x4426), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fscalew", two (0xF000, 0x5026), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fscalex", two (0xF000, 0x0026), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fscalex", two (0xF000, 0x0026), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fscalex", two (0xF000, 0x4826), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fseq", two (0xF040, 0x0001), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsf", two (0xF040, 0x0000), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsge", two (0xF040, 0x0013), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsgl", two (0xF040, 0x0016), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsgle", two (0xF040, 0x0017), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsgt", two (0xF040, 0x0012), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsle", two (0xF040, 0x0015), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fslt", two (0xF040, 0x0014), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsne", two (0xF040, 0x000E), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsnge", two (0xF040, 0x001C), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsngl", two (0xF040, 0x0019), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsngle", two (0xF040, 0x0018), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsngt", two (0xF040, 0x001D), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsnle", two (0xF040, 0x001A), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsnlt", two (0xF040, 0x001B), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsoge", two (0xF040, 0x0003), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsogl", two (0xF040, 0x0006), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsogt", two (0xF040, 0x0002), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsole", two (0xF040, 0x0005), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsolt", two (0xF040, 0x0004), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsor", two (0xF040, 0x0007), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsseq", two (0xF040, 0x0011), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fssf", two (0xF040, 0x0010), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fssne", two (0xF040, 0x001E), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsst", two (0xF040, 0x001F), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fst", two (0xF040, 0x000F), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsueq", two (0xF040, 0x0009), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsuge", two (0xF040, 0x000B), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsugt", two (0xF040, 0x000A), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsule", two (0xF040, 0x000D), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsult", two (0xF040, 0x000C), two (0xF1C0, 0xFFFF), "Ii@s"},
  {"fsun", two (0xF040, 0x0008), two (0xF1C0, 0xFFFF), "Ii@s"},

  {"fsgldivb", two (0xF000, 0x5824), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fsgldivd", two (0xF000, 0x5424), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fsgldivl", two (0xF000, 0x4024), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fsgldivp", two (0xF000, 0x4C24), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fsgldivs", two (0xF000, 0x4424), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fsgldivw", two (0xF000, 0x5024), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fsgldivx", two (0xF000, 0x0024), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fsgldivx", two (0xF000, 0x0024), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fsgldivx", two (0xF000, 0x4824), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fsglmulb", two (0xF000, 0x5827), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fsglmuld", two (0xF000, 0x5427), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fsglmull", two (0xF000, 0x4027), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fsglmulp", two (0xF000, 0x4C27), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fsglmuls", two (0xF000, 0x4427), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fsglmulw", two (0xF000, 0x5027), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fsglmulx", two (0xF000, 0x0027), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fsglmulx", two (0xF000, 0x0027), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fsglmulx", two (0xF000, 0x4827), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fsinb", two (0xF000, 0x580E), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fsind", two (0xF000, 0x540E), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fsinl", two (0xF000, 0x400E), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fsinp", two (0xF000, 0x4C0E), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fsins", two (0xF000, 0x440E), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fsinw", two (0xF000, 0x500E), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fsinx", two (0xF000, 0x000E), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fsinx", two (0xF000, 0x000E), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fsinx", two (0xF000, 0x480E), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fsinhb", two (0xF000, 0x5802), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fsinhd", two (0xF000, 0x5402), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fsinhl", two (0xF000, 0x4002), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fsinhp", two (0xF000, 0x4C02), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fsinhs", two (0xF000, 0x4402), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fsinhw", two (0xF000, 0x5002), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fsinhx", two (0xF000, 0x0002), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fsinhx", two (0xF000, 0x0002), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fsinhx", two (0xF000, 0x4802), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fsqrtb", two (0xF000, 0x5804), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fsqrtd", two (0xF000, 0x5404), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fsqrtl", two (0xF000, 0x4004), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fsqrtp", two (0xF000, 0x4C04), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fsqrts", two (0xF000, 0x4404), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fsqrtw", two (0xF000, 0x5004), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fsqrtx", two (0xF000, 0x0004), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fsqrtx", two (0xF000, 0x0004), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fsqrtx", two (0xF000, 0x4804), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"fsubb", two (0xF000, 0x5828), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"fsubd", two (0xF000, 0x5428), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"fsubl", two (0xF000, 0x4028), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"fsubp", two (0xF000, 0x4C28), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"fsubs", two (0xF000, 0x4428), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"fsubw", two (0xF000, 0x5028), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"fsubx", two (0xF000, 0x0028), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"fsubx", two (0xF000, 0x0028), two( 0xF1C0, 0xE07F), "IiFt"},
  {"fsubx", two (0xF000, 0x4828), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"ftanb", two (0xF000, 0x580F), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"ftand", two (0xF000, 0x540F), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"ftanl", two (0xF000, 0x400F), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"ftanp", two (0xF000, 0x4C0F), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"ftans", two (0xF000, 0x440F), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"ftanw", two (0xF000, 0x500F), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"ftanx", two (0xF000, 0x000F), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"ftanx", two (0xF000, 0x000F), two( 0xF1C0, 0xE07F), "IiFt"},
  {"ftanx", two (0xF000, 0x480F), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"ftanhb", two (0xF000, 0x5809), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"ftanhd", two (0xF000, 0x5409), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"ftanhl", two (0xF000, 0x4009), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"ftanhp", two (0xF000, 0x4C09), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"ftanhs", two (0xF000, 0x4409), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"ftanhw", two (0xF000, 0x5009), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"ftanhx", two (0xF000, 0x0009), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"ftanhx", two (0xF000, 0x0009), two( 0xF1C0, 0xE07F), "IiFt"},
  {"ftanhx", two (0xF000, 0x4809), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"ftentoxb", two (0xF000, 0x5812), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"ftentoxd", two (0xF000, 0x5412), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"ftentoxl", two (0xF000, 0x4012), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"ftentoxp", two (0xF000, 0x4C12), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"ftentoxs", two (0xF000, 0x4412), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"ftentoxw", two (0xF000, 0x5012), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"ftentoxx", two (0xF000, 0x0012), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"ftentoxx", two (0xF000, 0x0012), two( 0xF1C0, 0xE07F), "IiFt"},
  {"ftentoxx", two (0xF000, 0x4812), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"ftrapeq", two (0xF07C, 0x0001), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapf", two (0xF07C, 0x0000), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapge", two (0xF07C, 0x0013), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapgl", two (0xF07C, 0x0016), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapgle", two (0xF07C, 0x0017), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapgt", two (0xF07C, 0x0012), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftraple", two (0xF07C, 0x0015), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftraplt", two (0xF07C, 0x0014), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapne", two (0xF07C, 0x000E), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapnge", two (0xF07C, 0x001C), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapngl", two (0xF07C, 0x0019), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapngle", two (0xF07C, 0x0018), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapngt", two (0xF07C, 0x001D), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapnle", two (0xF07C, 0x001A), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapnlt", two (0xF07C, 0x001B), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapoge", two (0xF07C, 0x0003), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapogl", two (0xF07C, 0x0006), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapogt", two (0xF07C, 0x0002), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapole", two (0xF07C, 0x0005), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapolt", two (0xF07C, 0x0004), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapor", two (0xF07C, 0x0007), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapseq", two (0xF07C, 0x0011), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapsf", two (0xF07C, 0x0010), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapsne", two (0xF07C, 0x001E), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapst", two (0xF07C, 0x001F), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapt", two (0xF07C, 0x000F), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapueq", two (0xF07C, 0x0009), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapuge", two (0xF07C, 0x000B), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapugt", two (0xF07C, 0x000A), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapule", two (0xF07C, 0x000D), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapult", two (0xF07C, 0x000C), two (0xF1FF, 0xFFFF), "Ii"},
  {"ftrapun", two (0xF07C, 0x0008), two (0xF1FF, 0xFFFF), "Ii"},

  {"ftrapeq.w", two (0xF07A, 0x0001), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapf.w", two (0xF07A, 0x0000), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapge.w", two (0xF07A, 0x0013), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapgl.w", two (0xF07A, 0x0016), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapgle.w", two (0xF07A, 0x0017), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapgt.w", two (0xF07A, 0x0012), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftraple.w", two (0xF07A, 0x0015), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftraplt.w", two (0xF07A, 0x0014), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapne.w", two (0xF07A, 0x000E), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapnge.w", two (0xF07A, 0x001C), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapngl.w", two (0xF07A, 0x0019), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapngle.w", two (0xF07A, 0x0018), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapngt.w", two (0xF07A, 0x001D), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapnle.w", two (0xF07A, 0x001A), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapnlt.w", two (0xF07A, 0x001B), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapoge.w", two (0xF07A, 0x0003), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapogl.w", two (0xF07A, 0x0006), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapogt.w", two (0xF07A, 0x0002), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapole.w", two (0xF07A, 0x0005), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapolt.w", two (0xF07A, 0x0004), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapor.w", two (0xF07A, 0x0007), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapseq.w", two (0xF07A, 0x0011), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapsf.w", two (0xF07A, 0x0010), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapsne.w", two (0xF07A, 0x001E), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapst.w", two (0xF07A, 0x001F), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapt.w", two (0xF07A, 0x000F), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapueq.w", two (0xF07A, 0x0009), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapuge.w", two (0xF07A, 0x000B), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapugt.w", two (0xF07A, 0x000A), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapule.w", two (0xF07A, 0x000D), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapult.w", two (0xF07A, 0x000C), two (0xF1FF, 0xFFFF), "Ii^w"},
  {"ftrapun.w", two (0xF07A, 0x0008), two (0xF1FF, 0xFFFF), "Ii^w"},

  {"ftrapeq.l", two (0xF07B, 0x0001), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapf.l", two (0xF07B, 0x0000), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapge.l", two (0xF07B, 0x0013), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapgl.l", two (0xF07B, 0x0016), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapgle.l", two (0xF07B, 0x0017), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapgt.l", two (0xF07B, 0x0012), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftraple.l", two (0xF07B, 0x0015), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftraplt.l", two (0xF07B, 0x0014), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapne.l", two (0xF07B, 0x000E), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapnge.l", two (0xF07B, 0x001C), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapngl.l", two (0xF07B, 0x0019), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapngle.l", two (0xF07B, 0x0018), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapngt.l", two (0xF07B, 0x001D), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapnle.l", two (0xF07B, 0x001A), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapnlt.l", two (0xF07B, 0x001B), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapoge.l", two (0xF07B, 0x0003), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapogl.l", two (0xF07B, 0x0006), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapogt.l", two (0xF07B, 0x0002), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapole.l", two (0xF07B, 0x0005), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapolt.l", two (0xF07B, 0x0004), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapor.l", two (0xF07B, 0x0007), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapseq.l", two (0xF07B, 0x0011), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapsf.l", two (0xF07B, 0x0010), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapsne.l", two (0xF07B, 0x001E), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapst.l", two (0xF07B, 0x001F), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapt.l", two (0xF07B, 0x000F), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapueq.l", two (0xF07B, 0x0009), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapuge.l", two (0xF07B, 0x000B), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapugt.l", two (0xF07B, 0x000A), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapule.l", two (0xF07B, 0x000D), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapult.l", two (0xF07B, 0x000C), two (0xF1FF, 0xFFFF), "Ii^l"},
  {"ftrapun.l", two (0xF07B, 0x0008), two (0xF1FF, 0xFFFF), "Ii^l"},

  {"ftstb", two (0xF000, 0x583A), two( 0xF1C0, 0xFC7F), "Ii;b"},
  {"ftstd", two (0xF000, 0x543A), two( 0xF1C0, 0xFC7F), "Ii;F"},
  {"ftstl", two (0xF000, 0x403A), two( 0xF1C0, 0xFC7F), "Ii;l"},
  {"ftstp", two (0xF000, 0x4C3A), two( 0xF1C0, 0xFC7F), "Ii;p"},
  {"ftsts", two (0xF000, 0x443A), two( 0xF1C0, 0xFC7F), "Ii;f"},
  {"ftstw", two (0xF000, 0x503A), two( 0xF1C0, 0xFC7F), "Ii;w"},
  {"ftstx", two (0xF000, 0x003A), two( 0xF1C0, 0xE07F), "IiF8"},
  {"ftstx", two (0xF000, 0x483A), two( 0xF1C0, 0xFC7F), "Ii;x"},

  {"ftwotoxb", two (0xF000, 0x5811), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  {"ftwotoxd", two (0xF000, 0x5411), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  {"ftwotoxl", two (0xF000, 0x4011), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  {"ftwotoxp", two (0xF000, 0x4C11), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  {"ftwotoxs", two (0xF000, 0x4411), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  {"ftwotoxw", two (0xF000, 0x5011), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  {"ftwotoxx", two (0xF000, 0x0011), two( 0xF1C0, 0xE07F), "IiF8F7"},
  {"ftwotoxx", two (0xF000, 0x0011), two( 0xF1C0, 0xE07F), "IiFt"},
  {"ftwotoxx", two (0xF000, 0x4811), two( 0xF1C0, 0xFC7F), "Ii;xF7"},

  {"illegal", one (0045374), one (0177777), ""},
  {"jmp", one (0047300), one (0177700), "!s"},
  {"jsr", one (0047200), one (0177700), "!s"},
  {"lea", one (0040700), one (0170700), "!sAd"},
  {"linkw", one (0047120), one (0177770), "As#w"},
  {"linkl", one (0044010), one (0177770), "As#l"},
  {"link", one (0047120), one (0177770), "As#w"},
  {"link", one (0044010), one (0177770), "As#l"},

  {"lslb", one (0160410), one (0170770), "QdDs"}, /* lsrb #Q, Ds */
  {"lslb", one (0160450), one (0170770), "DdDs"}, /* lsrb Dd, Ds */
  {"lslw", one (0160510), one (0170770), "QdDs"}, /* lsrb #Q, Ds */
  {"lslw", one (0160550), one (0170770), "DdDs"}, /* lsrb Dd, Ds */
  {"lslw", one (0161700), one (0177700), "~s"},	/* Shift memory */
  {"lsll", one (0160610), one (0170770), "QdDs"}, /* lsrb #Q, Ds */
  {"lsll", one (0160650), one (0170770), "DdDs"}, /* lsrb Dd, Ds */

  {"lsrb", one (0160010), one (0170770), "QdDs"} /* lsrb #Q, Ds */,
  {"lsrb", one (0160050), one (0170770), "DdDs"}, /* lsrb Dd, Ds */
  {"lsrl", one (0160210), one (0170770), "QdDs"}, /* lsrb #Q, Ds */
  {"lsrl", one (0160250), one (0170770), "DdDs"}, /* lsrb #Q, Ds */
  {"lsrw", one (0160110), one (0170770), "QdDs"}, /* lsrb #Q, Ds */
  {"lsrw", one (0160150), one (0170770), "DdDs"}, /* lsrb #Q, Ds */
  {"lsrw", one (0161300), one (0177700), "~s"},	/* Shift memory */

  {"moveal", one (0020100), one (0170700), "*lAd"},
  {"moveaw", one (0030100), one (0170700), "*wAd"},
  {"moveb", one (0010000), one (0170000), ";b$d"}, /* move */
  {"movel", one (0020000), one (0170000), "*l$d"},
  {"movel", one (0020100), one (0170700), "*lAd"},
  {"movel", one (0047140), one (0177770), "AsUd"}, /* move to USP */
  {"movel", one (0047150), one (0177770), "UdAs"}, /* move from USP */
  {"movel", one (0070000), one (0170400), "MsDd"}, /* moveq written as move */

  {"moveml", one (0044300), one (0177700), "#w&s"}, /* movem reg to mem. */
  {"moveml", one (0044340), one (0177770), "#w-s"}, /* movem reg to autodecrement. */
  {"moveml", one (0046300), one (0177700), "!s#w"}, /* movem mem to reg. */
  {"moveml", one (0046330), one (0177770), "+s#w"}, /* movem autoinc to reg. */

  {"movemw", one (0044200), one (0177700), "#w&s"}, /* movem reg to mem. */
  {"movemw", one (0044240), one (0177770), "#w-s"}, /* movem reg to autodecrement. */
  {"movemw", one (0046200), one (0177700), "!s#w"}, /* movem mem to reg. */
  {"movemw", one (0046230), one (0177770), "+s#w"}, /* movem autoinc to reg. */

  {"movepl", one (0000510), one (0170770), "dsDd"}, /* memory to register */
  {"movepl", one (0000710), one (0170770), "Ddds"}, /* register to memory */
  {"movepw", one (0000410), one (0170770), "dsDd"}, /* memory to register */
  {"movepw", one (0000610), one (0170770), "Ddds"}, /* register to memory */
  {"moveq", one (0070000), one (0170400), "MsDd"},
  {"movew", one (0030000), one (0170000), "*w$d"},
  {"movew", one (0030100), one (0170700), "*wAd"}, /* movea, written as move */
  {"movew", one (0040300), one (0177700), "Ss$s"}, /* Move from sr */
  {"movew", one (0041300), one (0177700), "Cs$s"}, /* Move from ccr */
  {"movew", one (0042300), one (0177700), ";wCd"}, /* move to ccr */
  {"movew", one (0043300), one (0177700), ";wSd"}, /* move to sr */
/* movec not done */

  {"movesb", two (0007000, 0), two (0177700, 07777), "~sR1"},  /* moves from memory */
  {"movesb", two (0007000, 04000), two (0177700, 07777), "R1~s"},  /* moves to memory */
  {"movesl", two (0007200, 0), two (0177700, 07777), "~sR1"},  /* moves from memory */
  {"movesl", two (0007200, 04000), two (0177700, 07777), "R1~s"},  /* moves to memory */
  {"movesw", two (0007100, 0), two (0177700, 07777), "~sR1"},  /* moves from memory */
  {"movesw", two (0007100, 04000), two (0177700, 07777), "R1~s"},  /* moves to memory */

  {"mulsl", two (0046000, 004000), two (0177700, 0107770), ";lD1"},
  {"mulsl", two (0046000, 006000), two (0177700, 0107770), ";lD3D1"},
  {"mulsw", one (0140700), one (0170700), ";wDd"},
  {"muls", one (0140700), one (0170700), ";wDd"},
  {"mulul", two (0046000, 000000), two (0177700, 0107770), ";lD1"},
  {"mulul", two (0046000, 002000), two (0177700, 0107770), ";lD3D1"},
  {"muluw", one (0140300), one (0170700), ";lDd"},
  {"mulu", one (0140300), one (0170700), ";lDd"},
  {"nbcd", one (0044000), one (0177700), "$s"},
  {"negb", one (0042000), one (0177700), "$s"},
  {"negl", one (0042200), one (0177700), "$s"},
  {"negw", one (0042100), one (0177700), "$s"},
  {"negxb", one (0040000), one (0177700), "$s"},
  {"negxl", one (0040200), one (0177700), "$s"},
  {"negxw", one (0040100), one (0177700), "$s"},
  {"nop", one (0047161), one (0177777), ""},
  {"notb", one (0043000), one (0177700), "$s"},
  {"notl", one (0043200), one (0177700), "$s"},
  {"notw", one (0043100), one (0177700), "$s"},

  {"orb", one (0000000), one (0177700), "#b$s"}, /* ori written as or */
  {"orb", one (0000074), one (0177777), "#bCs"}, /* ori to ccr */
  {"orb", one (0100000), one (0170700), ";bDd"}, /* memory to register */
  {"orb", one (0100400), one (0170700), "Dd~s"}, /* register to memory */
  {"orib", one (0000000), one (0177700), "#b$s"},
  {"orib", one (0000074), one (0177777), "#bCs"}, /* ori to ccr */
  {"oril", one (0000200), one (0177700), "#l$s"},
  {"oriw", one (0000100), one (0177700), "#w$s"},
  {"oriw", one (0000174), one (0177777), "#wSs"}, /* ori to sr */
  {"orl", one (0000200), one (0177700), "#l$s"},
  {"orl", one (0100200), one (0170700), ";lDd"}, /* memory to register */
  {"orl", one (0100600), one (0170700), "Dd~s"}, /* register to memory */
  {"orw", one (0000100), one (0177700), "#w$s"},
  {"orw", one (0000174), one (0177777), "#wSs"}, /* ori to sr */
  {"orw", one (0100100), one (0170700), ";wDd"}, /* memory to register */
  {"orw", one (0100500), one (0170700), "Dd~s"}, /* register to memory */

  {"pack", one (0100500), one (0170770), "DsDd#w"}, /* pack Ds, Dd, #w */
  {"pack", one (0100510), one (0170770), "-s-d#w"}, /* pack -(As), -(Ad), #w */
  {"pea", one (0044100), one (0177700), "!s"},
  {"reset", one (0047160), one (0177777), ""},

  {"rolb", one (0160430), one (0170770), "QdDs"}, /* rorb #Q, Ds */
  {"rolb", one (0160470), one (0170770), "DdDs"}, /* rorb Dd, Ds */
  {"roll", one (0160630), one (0170770), "QdDs"}, /* rorb #Q, Ds */
  {"roll", one (0160670), one (0170770), "DdDs"}, /* rorb Dd, Ds */
  {"rolw", one (0160530), one (0170770), "QdDs"}, /* rorb #Q, Ds */
  {"rolw", one (0160570), one (0170770), "DdDs"}, /* rorb Dd, Ds */
  {"rolw", one (0163700), one (0177700), "~s"},	/* Rotate memory */
  {"rorb", one (0160030), one (0170770), "QdDs"}, /* rorb #Q, Ds */
  {"rorb", one (0160070), one (0170770), "DdDs"}, /* rorb Dd, Ds */
  {"rorl", one (0160230), one (0170770), "QdDs"}, /* rorb #Q, Ds */
  {"rorl", one (0160270), one (0170770), "DdDs"}, /* rorb Dd, Ds */
  {"rorw", one (0160130), one (0170770), "QdDs"}, /* rorb #Q, Ds */
  {"rorw", one (0160170), one (0170770), "DdDs"}, /* rorb Dd, Ds */
  {"rorw", one (0163300), one (0177700), "~s"},	/* Rotate memory */

  {"roxlb", one (0160420), one (0170770), "QdDs"}, /* roxrb #Q, Ds */
  {"roxlb", one (0160460), one (0170770), "DdDs"}, /* roxrb Dd, Ds */
  {"roxll", one (0160620), one (0170770), "QdDs"}, /* roxrb #Q, Ds */
  {"roxll", one (0160660), one (0170770), "DdDs"}, /* roxrb Dd, Ds */
  {"roxlw", one (0160520), one (0170770), "QdDs"}, /* roxrb #Q, Ds */
  {"roxlw", one (0160560), one (0170770), "DdDs"}, /* roxrb Dd, Ds */
  {"roxlw", one (0162700), one (0177700), "~s"}, /* Rotate memory */
  {"roxrb", one (0160020), one (0170770), "QdDs"}, /* roxrb #Q, Ds */
  {"roxrb", one (0160060), one (0170770), "DdDs"}, /* roxrb Dd, Ds */
  {"roxrl", one (0160220), one (0170770), "QdDs"}, /* roxrb #Q, Ds */
  {"roxrl", one (0160260), one (0170770), "DdDs"}, /* roxrb Dd, Ds */
  {"roxrw", one (0160120), one (0170770), "QdDs"}, /* roxrb #Q, Ds */
  {"roxrw", one (0160160), one (0170770), "DdDs"}, /* roxrb Dd, Ds */
  {"roxrw", one (0162300), one (0177700), "~s"}, /* Rotate memory */

  {"rtd", one (0047164), one (0177777), "#w"},
  {"rte", one (0047163), one (0177777), ""},
  {"rtm", one (0003300), one (0177760), "Rs"},
  {"rtr", one (0047167), one (0177777), ""},
  {"rts", one (0047165), one (0177777), ""},

  {"scc", one (0052300), one (0177700), "$s"},
  {"scs", one (0052700), one (0177700), "$s"},
  {"seq", one (0053700), one (0177700), "$s"},
  {"sf", one (0050700), one (0177700), "$s"},
  {"sge", one (0056300), one (0177700), "$s"},
  {"sgt", one (0057300), one (0177700), "$s"},
  {"shi", one (0051300), one (0177700), "$s"},
  {"sle", one (0057700), one (0177700), "$s"},
  {"sls", one (0051700), one (0177700), "$s"},
  {"slt", one (0056700), one (0177700), "$s"},
  {"smi", one (0055700), one (0177700), "$s"},
  {"sne", one (0053300), one (0177700), "$s"},
  {"spl", one (0055300), one (0177700), "$s"},
  {"st", one (0050300), one (0177700), "$s"},
  {"svc", one (0054300), one (0177700), "$s"},
  {"svs", one (0054700), one (0177700), "$s"},

  {"sbcd", one (0100400), one (0170770), "DsDd"}, /* sbcd Ds, Dd */
  {"sbcd", one (0100410), one (0170770), "-s-d"}, /* sbcd -(As), -(Ad) */
  {"stop", one (0047162), one (0177777), "#w"},

  {"subal", one (0110700), one (0170700), "*lAd"},
  {"subaw", one (0110300), one (0170700), "*wAd"},
  {"subb", one (0002000), one (0177700), "#b$s"}, /* subi written as sub */
  {"subb", one (0050400), one (0170700), "Qd%s"}, /* subq written as sub */
  {"subb", one (0110000), one (0170700), ";bDd"}, /* subb ??, Dd */
  {"subb", one (0110400), one (0170700), "Dd~s"}, /* subb Dd, ?? */
  {"subib", one (0002000), one (0177700), "#b$s"},
  {"subil", one (0002200), one (0177700), "#l$s"},
  {"subiw", one (0002100), one (0177700), "#w$s"},
  {"subl", one (0002200), one (0177700), "#l$s"},
  {"subl", one (0050600), one (0170700), "Qd%s"},
  {"subl", one (0110200), one (0170700), "*lDd"},
  {"subl", one (0110600), one (0170700), "Dd~s"},
  {"subl", one (0110700), one (0170700), "*lAd"},
  {"subqb", one (0050400), one (0170700), "Qd%s"},
  {"subql", one (0050600), one (0170700), "Qd%s"},
  {"subqw", one (0050500), one (0170700), "Qd%s"},
  {"subw", one (0002100), one (0177700), "#w$s"},
  {"subw", one (0050500), one (0170700), "Qd%s"},
  {"subw", one (0110100), one (0170700), "*wDd"},
  {"subw", one (0110300), one (0170700), "*wAd"}, /* suba written as sub */
  {"subw", one (0110500), one (0170700), "Dd~s"},

  {"subxb", one (0110400), one (0170770), "DsDd"}, /* subxb Ds, Dd */
  {"subxb", one (0110410), one (0170770), "-s-d"}, /* subxb -(As), -(Ad) */
  {"subxl", one (0110600), one (0170770), "DsDd"},
  {"subxl", one (0110610), one (0170770), "-s-d"},
  {"subxw", one (0110500), one (0170770), "DsDd"},
  {"subxw", one (0110510), one (0170770), "-s-d"},

  {"swap", one (0044100), one (0177770), "Ds"},

  {"tas", one (0045300), one (0177700), "$s"},
  {"trap", one (0047100), one (0177760), "Ts"},

  {"trapcc", one (0052374), one (0177777), ""},
  {"trapcs", one (0052774), one (0177777), ""},
  {"trapeq", one (0053774), one (0177777), ""},
  {"trapf", one (0050774), one (0177777), ""},
  {"trapge", one (0056374), one (0177777), ""},
  {"trapgt", one (0057374), one (0177777), ""},
  {"traphi", one (0051374), one (0177777), ""},
  {"traple", one (0057774), one (0177777), ""},
  {"trapls", one (0051774), one (0177777), ""},
  {"traplt", one (0056774), one (0177777), ""},
  {"trapmi", one (0055774), one (0177777), ""},
  {"trapne", one (0053374), one (0177777), ""},
  {"trappl", one (0055374), one (0177777), ""},
  {"trapt", one (0050374), one (0177777), ""},
  {"trapvc", one (0054374), one (0177777), ""},
  {"trapvs", one (0054774), one (0177777), ""},

  {"trapcc.w", one (0052372), one (0177777), ""},
  {"trapcs.w", one (0052772), one (0177777), ""},
  {"trapeq.w", one (0053772), one (0177777), ""},
  {"trapf.w", one (0050772), one (0177777), ""},
  {"trapge.w", one (0056372), one (0177777), ""},
  {"trapgt.w", one (0057372), one (0177777), ""},
  {"traphi.w", one (0051372), one (0177777), ""},
  {"traple.w", one (0057772), one (0177777), ""},
  {"trapls.w", one (0051772), one (0177777), ""},
  {"traplt.w", one (0056772), one (0177777), ""},
  {"trapmi.w", one (0055772), one (0177777), ""},
  {"trapne.w", one (0053372), one (0177777), ""},
  {"trappl.w", one (0055372), one (0177777), ""},
  {"trapt.w", one (0050372), one (0177777), ""},
  {"trapvc.w", one (0054372), one (0177777), ""},
  {"trapvs.w", one (0054772), one (0177777), ""},

  {"trapcc.l", one (0052373), one (0177777), ""},
  {"trapcs.l", one (0052773), one (0177777), ""},
  {"trapeq.l", one (0053773), one (0177777), ""},
  {"trapf.l", one (0050773), one (0177777), ""},
  {"trapge.l", one (0056373), one (0177777), ""},
  {"trapgt.l", one (0057373), one (0177777), ""},
  {"traphi.l", one (0051373), one (0177777), ""},
  {"traple.l", one (0057773), one (0177777), ""},
  {"trapls.l", one (0051773), one (0177777), ""},
  {"traplt.l", one (0056773), one (0177777), ""},
  {"trapmi.l", one (0055773), one (0177777), ""},
  {"trapne.l", one (0053373), one (0177777), ""},
  {"trappl.l", one (0055373), one (0177777), ""},
  {"trapt.l", one (0050373), one (0177777), ""},
  {"trapvc.l", one (0054373), one (0177777), ""},
  {"trapvs.l", one (0054773), one (0177777), ""},

  {"trapv", one (0047166), one (0177777), ""},

  {"tstb", one (0045000), one (0177700), ";b"},
  {"tstw", one (0045100), one (0177700), "*w"},
  {"tstl", one (0045200), one (0177700), "*l"},

  {"unlk", one (0047130), one (0177770), "As"},
  {"unpk", one (0100600), one (0170770), "DsDd#w"}, /* unpk Ds, Dd, #w */
  {"unpk", one (0100610), one (0170770), "-s-d#w"}, /* unpk -(As), -(Ad), #w */



		/* JF this is for SUN, which has different mnemonics */
  {"jbsr", one (0060400), one (0177400), "Bg"},
  {"jra", one (0060000), one (0177400), "Bg"},
  
  {"jhi", one (0061000), one (0177400), "Bg"},
  {"jls", one (0061400), one (0177400), "Bg"},
  {"jcc", one (0062000), one (0177400), "Bg"},
  {"jcs", one (0062400), one (0177400), "Bg"},
  {"jne", one (0063000), one (0177400), "Bg"},
  {"jeq", one (0063400), one (0177400), "Bg"},
  {"jvc", one (0064000), one (0177400), "Bg"},
  {"jvs", one (0064400), one (0177400), "Bg"},
  {"jpl", one (0065000), one (0177400), "Bg"},
  {"jmi", one (0065400), one (0177400), "Bg"},
  {"jge", one (0066000), one (0177400), "Bg"},
  {"jlt", one (0066400), one (0177400), "Bg"},
  {"jgt", one (0067000), one (0177400), "Bg"},
  {"jle", one (0067400), one (0177400), "Bg"},

  {"moval", one (0020100), one (0170700), "*lAd"},
  {"movaw", one (0030100), one (0170700), "*wAd"},
  {"movb", one (0010000), one (0170000), ";b$d"}, /* mov */
  {"movl", one (0020000), one (0170000), "*l$d"},
  {"movl", one (0020100), one (0170700), "*lAd"},
  {"movl", one (0047140), one (0177770), "AsUd"}, /* mov to USP */
  {"movl", one (0047150), one (0177770), "UdAs"}, /* mov from USP */
  {"movl", one (0070000), one (0170400), "MsDd"}, /* movq written as mov */
  {"movml", one (0044300), one (0177700), "#w&s"}, /* movm reg to mem. */
  {"movml", one (0044340), one (0177770), "#w-s"}, /* movm reg to autodecrement. */
  {"movml", one (0046300), one (0177700), "!s#w"}, /* movm mem to reg. */
  {"movml", one (0046330), one (0177770), "+s#w"}, /* movm autoinc to reg. */
  {"movmw", one (0044200), one (0177700), "#w&s"}, /* movm reg to mem. */
  {"movmw", one (0044240), one (0177770), "#w-s"}, /* movm reg to autodecrement. */
  {"movmw", one (0046200), one (0177700), "!s#w"}, /* movm mem to reg. */
  {"movmw", one (0046230), one (0177770), "+s#w"}, /* movm autoinc to reg. */
  {"movpl", one (0000510), one (0170770), "dsDd"}, /* memory to register */
  {"movpl", one (0000710), one (0170770), "Ddds"}, /* register to memory */
  {"movpw", one (0000410), one (0170770), "dsDd"}, /* memory to register */
  {"movpw", one (0000610), one (0170770), "Ddds"}, /* register to memory */
  {"movq", one (0070000), one (0170400), "MsDd"},
  {"movw", one (0030000), one (0170000), "*w$d"},
  {"movw", one (0030100), one (0170700), "*wAd"}, /* mova, written as mov */
  {"movw", one (0040300), one (0177700), "Ss$s"}, /* Move from sr */
  {"movw", one (0041300), one (0177700), "Cs$s"}, /* Move from ccr */
  {"movw", one (0042300), one (0177700), ";wCd"}, /* mov to ccr */
  {"movw", one (0043300), one (0177700), ";wSd"}, /* mov to sr */
/* movc not done */

  {"movsb", two (0007000, 0), two (0177700, 07777), "~sR1"},  /* movs from memory */
  {"movsb", two (0007000, 04000), two (0177700, 07777), "R1~s"},  /* movs to memory */
  {"movsl", two (0007200, 0), two (0177700, 07777), "~sR1"},  /* movs from memory */
  {"movsl", two (0007200, 04000), two (0177700, 07777), "R1~s"},  /* movs to memory */
  {"movsw", two (0007100, 0), two (0177700, 07777), "~sR1"},  /* movs from memory */
  {"movsw", two (0007100, 04000), two (0177700, 07777), "R1~s"},  /* movs to memory */
};

int numopcodes=sizeof(m68k_opcodes)/sizeof(m68k_opcodes[0]);

struct m68k_opcode *endop = m68k_opcodes+sizeof(m68k_opcodes)/sizeof(m68k_opcodes[0]);;
